//package com.witdata.common.utils;
//
//
//
//
//import com.alibaba.fastjson2.JSON;
//import com.alibaba.fastjson2.JSONArray;
//import com.alibaba.fastjson2.JSONObject;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.http.HttpEntity;
//import org.apache.http.client.methods.CloseableHttpResponse;
//import org.apache.http.client.methods.HttpGet;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.client.methods.HttpRequestBase;
//import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.CloseableHttpClient;
//import org.apache.http.impl.client.HttpClientBuilder;
//import org.apache.http.util.EntityUtils;
//
//import java.io.IOException;
//import java.util.List;
//
//@Slf4j
//public class HttpUtils {
//    /**
//     * 执行一个HTTP请求并将响应体转换为指定类型的对象。
//     *
//     * @param request       要执行的HTTP请求。可以是HttpRequestBase的任何实现（HttpGet, HttpPost等）。
//     * @param responseType  响应内容应该转换成的对象类型的Class。
//     * @param <T>           响应对象的类型。
//     * @return              以指定类型返回的响应内容的实例，失败时返回null。
//     */
//    private static <T> T executeRequest(HttpRequestBase request, Class<T> responseType) {
//        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//             CloseableHttpResponse response = httpClient.execute(request)) {
//            HttpEntity entity = response.getEntity();
//            if (entity != null) {
//                String jsonStr = EntityUtils.toString(entity, "UTF-8");
//                // 使用FastJSON将响应内容转换为指定的Java对象类型
//                return JSON.parseObject(jsonStr, responseType);
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 对指定URL发起HTTP GET请求，并将响应体转换为指定类型的对象。
//     *
//     * @param url           目标URL。
//     * @param responseType  响应内容应该转换成的对象类型的Class。
//     * @param <T>           响应对象的类型。
//     * @return              以指定类型返回的响应内容的实例，失败时返回null。
//     */
//    public static <T> T getForObject(String url, Class<T> responseType) {
//        HttpGet httpGet = new HttpGet(url);
//        // 设置接受的响应内容类型为JSON
//        httpGet.setHeader("Accept", "application/json");
//        return executeRequest(httpGet, responseType);
//    }
//
//
//    /**
//     * 对指定URL发起HTTP POST请求，并将响应体转换为指定类型的对象。
//     * @param url
//     * @param requestObj
//     * @return
//     */
//    public static ChatResponseDTO chatWithAssistant(String url, Object requestObj) {
//
//        ChatResponseDTO chatResponseDTO = new ChatResponseDTO();
//
//        // 创建Http客户端
//        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
//            // 创建HttpPost请求
//            HttpPost httpPost = new HttpPost(url);
//            // 设置请求体
//            StringEntity entity = new StringEntity(JSON.toJSONString(requestObj), "UTF-8");
//            log.info(JSON.toJSONString(requestObj));
//            httpPost.setEntity(entity);
//            // 设置请求头
//            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
//            // 执行请求并获取响应
//            try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
//                HttpEntity responseEntity = response.getEntity();
//                log.info(responseEntity.toString());
//                if (responseEntity != null) {
//                    String jsonStr = EntityUtils.toString(responseEntity, "UTF-8");
//                    // 正确地修正JSON字符串格式
//                    jsonStr = jsonStr.replace("}","}}");
//                    jsonStr = jsonStr.replace("data","{\"data\"");
//                    log.info(jsonStr);
//                    JSONObject jsonObject = JSON.parseObject(jsonStr); // 使用JSON.parseObject解析
//
//                    JSONObject dataObject = jsonObject.getJSONObject("data");
//
//                    String content = dataObject.getString("answer");
//                    JSONArray docsArray = dataObject.getJSONArray("docs");
//                    List<String> docs = docsArray.toList(String.class); // 正确地从JSONArray转换到List<String>
//                    chatResponseDTO.setContent(content);
//                    chatResponseDTO.setDocs(docs);
//                }
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        return chatResponseDTO;
//    }
//}
